package com.qingcloud.adminbackend.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qingcloud.adminbackend.entity.user.SysUser;
import com.qingcloud.adminbackend.entity.usergroup.SysUsergroup;
import com.qingcloud.adminbackend.entity.usergroup.SysUsergroupDTO;
import com.qingcloud.adminbackend.entity.usergroup.SysUsergroupPageParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 新用户组 Mapper 接口
 * </p>
 *
 * @author wangjinnan
 * @since 2018-11-15
 */
public interface SysUsergroupMapper extends BaseMapper<SysUsergroup> {
    /**
     * 根据客户Id删除用户组
     *
     * @param ids
     */
    void deleteUserGroup(@Param("orgIds") List<String> ids);

    /**
     * 查询用户组Id
     *
     * @param ids
     */
    List<String> findUserGroup(@Param("orgIds") List<String> ids);

    /**
     * 删除用户组与用户的关系
     *
     * @param ids
     */
    void deleteUserGroupUser(@Param("groupIds") List<String> ids);

    /**
     * 删除用户组与设备组的关系
     *
     * @param ids
     */
    void deleteUserGroupStationGroup(@Param("groupIds") List<String> ids);

    /**
     * 分页查询用户组
     *
     * @param page
     * @param param
     */
    IPage<SysUsergroupDTO> page(@Param("page") Page page, @Param("param") SysUsergroupPageParam param,
                                @Param("manageAppId") Set<Integer> manageAppId);

    /**
     * 通过用户组Id查询用户
     *
     * @param page
     * @param groupId
     * @return
     */
    IPage<SysUser> findUserPageByGroupId(Page page, @Param("groupId") String groupId);

    /**
     * 根据用户组Id查询客户
     *
     * @param groupId
     * @return
     */
    List<String> findOrgByUserGroup(@Param("groupIds") List<String> groupId);

    /**
     * 获取用户组列表
     *
     * @param orgId
     * @param groupName
     * @return
     */
    List<SysUsergroupDTO> getUserGroupList(@Param("orgId") String orgId, @Param("groupName") String groupName);

    /**
     * 用户删除用户组
     *
     * @param id 用户组ID
     * @return
     */
    int logicDeleteById(@Param("id") String id);

    List<SysUsergroupDTO> getUserGroupByUserId(String userId);

    /**
     * 根据客户ID查询用户组信息
     *
     * @param orgIds
     * @return
     */
    List<SysUsergroupDTO> findUserGroupByOrgId(@Param("orgIds") List<String> orgIds);

    List<SysUsergroupDTO> findUserGroupByIds(@Param("groupIds") List<String> userGroupIds);
}
